/*
 * @Author: fuhongliang-TSJ hongliang.fu@4d-bios.com
 * @Date: 2025-08-20 16:10:55
 * @LastEditTime: 2025-08-20 16:17:34
 * @LastEditors: fuhongliang-TSJ hongliang.fu@4d-bios.com
 * @Description: 
 * @FilePath: \lc_-esp32_-s3\components\bsp\internal_temp_sensor\internal_temp_sensor.c
 * 立创实战派ESP32-S3开发板
 * Copyright (c) 2025 by 4D Bios, All Rights Reserved. 
 */
#include "internal_temp_sensor.h"

esp_err_t rev_flag;
temperature_sensor_handle_t temp_handle = NULL; /* 温度传感器句柄 */

/**
 * @brief       初始化内部温度传感器
 * @param       无
 * @retval      无
 */
void temperature_sensor_init(void)
{
    temperature_sensor_config_t temp_sensor;
    
    temp_sensor.range_min = SENSOR_RANGE_MIN;   /* 要测试温度的最小值 */
    temp_sensor.range_max = SENSOR_RANGE_MAX;   /* 要测试温度的最大值 */

    rev_flag |= temperature_sensor_install(&temp_sensor, &temp_handle);
    ESP_ERROR_CHECK(rev_flag);
}

/**
 * @brief       复位内部温度传感器
 * @param       无
 * @retval      无
 */
void temperature_sensor_deinit(void)
{
    rev_flag |= temperature_sensor_uninstall(temp_handle);
    ESP_ERROR_CHECK(rev_flag);
}

/**
 * @brief       获取内部温度传感器温度值
 * @param       无
 * @retval      返回内部温度值
 */
float sensor_get_temperature(void)
{
    float temp;

    /* 启用温度传感器 */
    rev_flag |= temperature_sensor_enable(temp_handle);

    /* 获取传输的传感器数据 */ 
    rev_flag |= temperature_sensor_get_celsius(temp_handle, &temp);

    /* 温度传感器使用完毕后，禁用温度传感器，节约功耗 */
    rev_flag |= temperature_sensor_disable(temp_handle);
    ESP_ERROR_CHECK(rev_flag);

    return temp;
}